#!/bin/bash

# 指定 gunicorn.pid 文件的路径
PID_FILE="./pid/gunicorn.pid"

# 检查PID文件是否存在
if [ -f "$PID_FILE" ]; then
    # 读取PID文件中的PID
    GUNICORN_PID=$(cat "$PID_FILE")

    echo "Found gunicorn process: $GUNICORN_PID"

    # 给主进程发送SIGINT信号，请求正常停止进程
    kill -INT "$GUNICORN_PID"

    # 睡眠等待主进程结束
    sleep 5

    # 检查是否还有属于该主进程的子进程，并尝试杀死它们
    # 注意：这里使用pgrep和pkill来匹配父进程ID
    if pgrep -P "$GUNICORN_PID" > /dev/null; then
        echo "Found gunicorn child processes, stopping them."
        pkill -P "$GUNICORN_PID"
    fi

    echo "Stopped gunicorn process and child processes."

    # 可选：删除PID文件
    rm "$PID_FILE"

else
    echo "No gunicorn PID file found."
fi


# 查找 gunicorn 主进程 PID
# 给主进程发送 SIGINT 信号请求正常关闭
# 睡眠 5 秒等待主进程结束
# 使用 pstree 命令查找所有 gunicorn 子进程 PID
# 使用 kill 命令杀死所有子进程